package model;

import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table(name="movimento_caixa")
@SequenceGenerator(name="movimento_caixa_id_seq", sequenceName="movimento_caixa_id_seq", allocationSize=1, initialValue=1 )
public class MovimentoCaixa  implements java.io.Serializable {

    @Id 
    @GeneratedValue(generator="movimento_caixa_id_seq", strategy=GenerationType.SEQUENCE)
    @Column(name="id", unique=true, nullable=false)
    private int id;
    
    @Column(name="numero_caixa", nullable=false)
    private String numeroCaixa;
    
    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="movimentoCaixa")
    private List<Suprimento> suprimentos = new ArrayList();
    
    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="movimentoCaixa")
    private List<VendaCabecalho> vendaCabecalhos;
    
    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="movimentoCaixa")
    private List<Sangria> sangrias = new ArrayList();
    
    @OneToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="movimentoCaixa")
    private FechamentoCaixa fechamentoCaixa;
    
    @OneToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="movimentoCaixa")
    private AberturaCaixa aberturaCaixa;

    public MovimentoCaixa() {
    }

    public MovimentoCaixa(int id, String numeroCaixa) {
        this.id = id;
        this.numeroCaixa = numeroCaixa;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNumeroCaixa() {
        return numeroCaixa;
    }

    public void setNumeroCaixa(String numeroCaixa) {
        this.numeroCaixa = numeroCaixa;
    }

    public List<Suprimento> getSuprimentos() {
        return suprimentos;
    }

    public void setSuprimentos(List<Suprimento> suprimentos) {
        this.suprimentos = suprimentos;
    }

    public List<VendaCabecalho> getVendaCabecalho() {
        return vendaCabecalhos;
    }

    public void setVendaCabecalho(List<VendaCabecalho> vendaCabecalhos) {
        this.vendaCabecalhos = vendaCabecalhos;
    }

    public List<Sangria> getSangrias() {
        return sangrias;
    }

    public void setSangrias(List<Sangria> sangrias) {
        this.sangrias = sangrias;
    }

    public FechamentoCaixa getFechamentoCaixa() {
        return fechamentoCaixa;
    }

    public void setFechamentoCaixas(FechamentoCaixa fechamentoCaixa) {
        this.fechamentoCaixa = fechamentoCaixa;
    }

    public AberturaCaixa getAberturaCaixa() {
        return aberturaCaixa;
    }

    public void setAberturaCaixas(AberturaCaixa aberturaCaixa) {
        this.aberturaCaixa = aberturaCaixa;
    }    
}